package com.haredot.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 该注解可以实现 局部功能的IP限流
 *  该注解 主要使用在 控制器的 方法上
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface IpRate {
    /**
     * 时间单位, 如果 为 -1， 则代表 使用 全局的时间
     * @return
     */
    long time() default -1;

    /**
     * 单位时间内允许的最大访问次数，-1 代表使用全局的配置
     * @return
     */
    long maxCount() default -1 ;

    /**
     * 时间单位，默认为 毫秒
     * @return
     */
    TimeUnit unit() default TimeUnit.MILLISECONDS ;
}
